perm filename DIGTIZ.SAI[PIX,HPM]2 blob
sn#375186 filedate 1978-08-23 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "DIGTIZ"
C00009 ENDMK
C⊗;
BEGIN "DIGTIZ"
INTEGER NRT,P2,JOBNO; INTEGER I,J,N,NPX,NSU; REAL REDUN; STRING S;
INTEGER BCL,TCL,SUMS,XEE,YEE,NRTRY; INTEGER CAMRA,CAM,HIG,WID,BIT;
STRING FND,FN1,FN2,FNP,FNR;
REQUIRE "PIXHDR.SAI[VIS,HPM]" SOURCE_FILE;
INTEGER ARRAY MESSAGE[1:32], HD[1:2];
IF FALSE THEN BEGIN
S←S[1 TO 1]; comment forces SUBST to be loaded;
CALL(0,"SLEEP"); comment forces CALL to be loaded;
END;
PRINT("READY");
START_CODE MAIL 1,ACCESS(MESSAGE[1]); comment WRCV; END;
WHILE TRUE DO
BEGIN "WAIT"
JOBNO←MESSAGE[1];
HIG←MESSAGE[2]; WID←MESSAGE[3]; BIT←MESSAGE[4]; CAMRA←MESSAGE[5];
YEE←MESSAGE[6]; XEE←MESSAGE[7]; BCL←MESSAGE[8]; TCL←MESSAGE[9];
SUMS←MESSAGE[10]; REDUN←MEMORY[LOCATION(MESSAGE[11]),REAL];
FND←CV6STR(MESSAGE[12]); FN1←CV6STR(MESSAGE[13]); FN2←CV6STR(MESSAGE[14]);
FNP←CV6STR(MESSAGE[15]); FNR←CV6STR(MESSAGE[16]);
HD[1]←JOBNO; HD[2]←LOCATION(MESSAGE[1]); P2←0; WHILE 2↑P2<SUMS DO P2←P2+1;
IF CAMRA>'40 THEN CAMRA←CAMRA LAND '67;
IF CAMRA='42∨CAMRA='41 THEN CAM←CAMRA LAND 3 ELSE
BEGIN INTEGER I,J;
I←'401400000000 LOR LOCATION(J);
J←IF CAMRA≥'40 THEN CAMRA LAND 7 ELSE 1 LSH (35-CAMRA);
START_CODE
MOVE 1,I;
CALLI 1,'400070; COMMENT VDSMAP;
JUMP 0,0;
END;
CAM←3;
END;
BEGIN "ARRAYS"
INTEGER ARRAY T[1:NPX←REDUN*SUMS*2↑(BIT-4),0:PIXDIM(HIG,WID,4)];
INTEGER ARRAY U[0:PIXDIM(HIG,WID,P2+BIT)], PIC[0:PIXDIM(HIG,WID,BIT)];
INTEGER ARRAY MTCH,RN[1:NPX,1:NPX];INTEGER ARRAY DIA[1:NPX];
MAKPIX(HIG,WID,BIT,PIC[0]); MAKPIX(HIG,WID,BIT+P2,U[0]);
NSU←SUMS*2↑(BIT-4);
FOR I←1 STEP 1 UNTIL NPX DO MAKPIX(HIG,WID,4,T[I,0]);
PRINT("!");
WHILE TRUE DO
BEGIN "TAKE"
START_CODE MAIL 1,ACCESS(MESSAGE[1]); comment WRCV; END;
IF MESSAGE[1]>0 THEN DONE "TAKE";
NRT←0; FOR I←1 STEP 1 UNTIL NPX DO
NRT←NRT LOR TVRAW(CAM,YEE,XEE,T[I,0],BCL,TCL,NRTRY);
HD[1]←JOBNO; HD[2]←LOCATION(MESSAGE[1]);
START_CODE MAIL 0,ACCESS(HD[1]); comment SEND; JRST .+1; END;
FOR I←1 STEP 1 UNTIL NPX DO TVGRY(T[I,0]);
IF NRT≥0 THEN
BEGIN "COMPARE"
INTEGER BST;
FOR I←1 STEP 1 UNTIL NPX-1 DO FOR J←I+1 STEP 1 UNTIL NPX DO
MTCH[I,J]←MTCH[J,I]←CMPPAD(T[I,0],T[J,0]);
BST←1;
FOR I←1 STEP 1 UNTIL NPX DO
BEGIN INTEGER II,JJ;
FOR II←1 STEP 1 UNTIL NPX DO
BEGIN
RN[I,II]←1;
FOR JJ←1 STEP 1 UNTIL II-1 DO IF MTCH[I,JJ]<MTCH[I,II]
THEN RN[I,II]←RN[I,II]+1 ELSE RN[I,JJ]←RN[I,JJ]+1;
END;
FOR II←1 STEP 1 UNTIL NPX DO IF RN[I,II]=NSU THEN DIA[I]←MTCH[I,II];
IF DIA[I]<DIA[BST] THEN BST←I;
END;
WIPE(U[0]);
FOR I←1 STEP 1 UNTIL NPX DO IF RN[BST,I]≤NSU THEN PICADD(T[I,0],U[0]);
END "COMPARE";
PICSH(U[0],PIC[0],SUMS);
PUTPFL(PIC[0],FND&":"&FN1&"."&FN2&"["&FNP&","&FNR&"]");
HD[1]←JOBNO; HD[2]←LOCATION(MESSAGE[1]);
START_CODE MAIL 0,ACCESS(HD[1]); comment SEND; JRST .+1; END;
END "TAKE";
END "ARRAYS";
END "WAIT";
END;